package org.moyrax.nereyda.services.core
{
	/**
	 * Esta clase es la definición para los Value Objects. Cada objeto VO
	 * que se defina en la aplicación, deberá extender esta clase.
	 */
	public dynamic class ValueObject
	{
		/**
		 * Copia los valores que posean todos los campos del objeto
		 * especificado a este objeto, siempre que las propiedades
		 * existan en la instancia actual.
		 * 
		 * @param object Objeto desde el cual se copiarán las propiedades.
		 */
		public function copyFrom( object:Object ):void
		{
			for ( var field:String in object )
			{
				if ( this.hasOwnProperty( field ) ) 
				{
					this[field] = object[field];
				}
			}
		}
		
		/**
		 * Copia todas las propiedades de esta instancia,
		 * al objeto especificado. Si las propiedades no
		 * existen en el objeto de destino, serán creadas.
		 * 
		 * @param object Objeto al cual se copiarán las propiedades.
		 */
		public function copyTo( object:Object ):void
		{
			for each ( var field:String in this )
			{
				object[field] = this[field];
			}
		}
	}
}